package com.源码分析;

import org.junit.Test;

import reactor.core.publisher.Flux;

public class LimitRateDemo {

	@Test
	public void test() {
		// limitRate(N)拆分下游请求，让他们以较小的批量传播到上游。比如一个100的request，通过limitRate(10)会导致最多10次10个的requests，传播到上游。limitRate实现了上面讨论的补充优化。
		// 该operator有个变种，可以调整补充总量：limitRate(highTide, lowTide)，lowTide为0就是严格的highTide批量的请求，而没有补充优化。
		Flux<Object> source = Flux.generate(() -> 0, (state, sink) -> {
			sink.next("3 x " + state + " = " + 3 * state);
			if (state == 10)
				sink.complete();
			return state + 1;
		}).limitRate(2);
		source.subscribe(x -> {
			System.out.println(x);
		});
	}

}
